Analisando dados de vendas de video games¶
In [2]:
import pandas as pd
import plotly.express as px
In [3]:
df = pd.read_csv(r"C:\Users\vcsme\Documents\Curso Analise de Dados\M3\3-Projeto de analise de dados\projeto_guiado\vgchartz-2024.csv")
In [4]:
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 64016 entries, 0 to 64015 Data columns (total 14 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 img 64016 non-null object 1 title 64016 non-null object 2 console 64016 non-null object 3 genre 64016 non-null object 4 publisher 64016 non-null object 5 developer 63999 non-null object 6 critic_score 6678 non-null float64 7 total_sales 18922 non-null float64 8 na_sales 12637 non-null float64 9 jp_sales 6726 non-null float64 10 pal_sales 12824 non-null float64 11 other_sales 15128 non-null float64 12 release_date 56965 non-null object 13 last_update 17879 non-null object dtypes: float64(6), object(8) memory usage: 6.8+ MB
In [5]:
df.describe()
Out[5]:
| critic_score | total_sales | na_sales | jp_sales | pal_sales | other_sales | |
|---|---|---|---|---|---|---|
| count | 6678.000000 | 18922.000000 | 12637.000000 | 6726.000000 | 12824.000000 | 15128.000000 |
| mean | 7.220440 | 0.349113 | 0.264740 | 0.102281 | 0.149472 | 0.043041 |
| std | 1.457066 | 0.807462 | 0.494787 | 0.168811 | 0.392653 | 0.126643 |
| min | 1.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
| 25% | 6.400000 | 0.030000 | 0.050000 | 0.020000 | 0.010000 | 0.000000 |
| 50% | 7.500000 | 0.120000 | 0.120000 | 0.040000 | 0.040000 | 0.010000 |
| 75% | 8.300000 | 0.340000 | 0.280000 | 0.120000 | 0.140000 | 0.030000 |
| max | 10.000000 | 20.320000 | 9.760000 | 2.130000 | 9.850000 | 3.120000 |
In [6]:
for col in ['title', 'console', 'genre', 'publisher', 'developer']:
print(df[col].value_counts())
print('_'*50)
title
Plants vs. Zombies 17
Pac-Man 16
Monopoly 15
Doom 14
Double Dragon 14
..
Bakegyamon: Ayakashi Fighting 1
Avatar Showdown 1
Avatar Fighter Online 1
Avatar Fighter 1
Yurukill: The Calumniation Games 1
Name: count, Length: 39798, dtype: int64
__________________________________________________
console
PC 12617
PS2 3565
DS 3288
PS4 2878
PS 2707
...
TG16 3
FDS 1
C128 1
Aco 1
BBCM 1
Name: count, Length: 81, dtype: int64
__________________________________________________
genre
Misc 9304
Action 8557
Adventure 6260
Role-Playing 5721
Sports 5586
Shooter 5410
Platform 4001
Strategy 3685
Puzzle 3521
Racing 3425
Simulation 3158
Fighting 2367
Action-Adventure 1877
Visual Novel 493
Music 297
Party 151
MMO 115
Education 35
Board Game 33
Sandbox 20
Name: count, dtype: int64
__________________________________________________
publisher
Unknown 8842
Sega 2207
Ubisoft 1663
Electronic Arts 1619
Activision 1582
...
Cancer Research UK 1
XperimentalZ Games 1
Nano Games 1
Cooking Mama Ltd. 1
PLAYDIUS 1
Name: count, Length: 3383, dtype: int64
__________________________________________________
developer
Unknown 4435
Konami 976
Sega 915
Capcom 870
Namco 489
...
Solutions 2 Go 1
Whampashimash 1
Redwind Software 1
Iron Square 1
Paretto 1
Name: count, Length: 8862, dtype: int64
__________________________________________________
Quais são os 10 jogos mais vendidos? E como é a venda desses para cada plataforma?¶
In [7]:
jogos_mais_vendidos = df.groupby(['title'])['total_sales'].sum().sort_values(ascending=False)
top_jogos = pd.DataFrame({'titulos': jogos_mais_vendidos.index, 'vendas': jogos_mais_vendidos.values})
top_10_jogos = top_jogos[0:10]
top_10_jogos = top_10_jogos.sort_values(by='titulos')
In [8]:
px.bar(top_10_jogos, x='titulos', y='vendas', title='Jogos mais vendidos',
labels={
"vendas": "Total de Vendas em Milhões",
"titulos": "Título do Jogo",
})
In [9]:
df_top_games = df[df['title'].isin(top_10_jogos['titulos'].unique())]
df_top_games = df_top_games.sort_values(by='title')
px.bar(df_top_games, x='title', y='total_sales', color='console', title='Jogos mais vendidos por plataforma',
labels={
"total_sales": "Total de Vendas em Milhões",
"title": "Título do Jogo",
"console": "Plataforma",
})
Como foi a venda de jogos por ano para as distribuidoras que mais venderam?¶
In [10]:
df['year'] = pd.to_datetime(df['release_date']).dt.year
In [11]:
pub_vendas_por_ano = df.groupby(['publisher', 'year']).agg({'total_sales': 'sum'}).reset_index()
pub_vendas = pub_vendas_por_ano.groupby('publisher').sum('total_sales').reset_index()
top_pub = pub_vendas_por_ano[pub_vendas_por_ano['publisher'].isin(pub_vendas[pub_vendas['total_sales'] < 100]['publisher'].values)]
In [12]:
px.line(top_pub, x='year', y='total_sales',
color='publisher', title='Vendas das Distribuidoras por Ano',
labels={
'total_sales': 'Total de Vendas em Milhões',
'year': 'Ano'
})
In [13]:
px.area(top_pub, x='year', y='total_sales',
color='publisher', title='Vendas das Distribuidoras por Ano',
labels={
'total_sales': 'Total de Vendas em Milhões',
'year': 'Ano'
})
A nota de um jogo influencia em suas vendas?¶
In [14]:
px.scatter(df, x='critic_score', y='total_sales', hover_data=['title'])
In [15]:
px.scatter(df, x='critic_score', y='total_sales', color='console', hover_data=['title'])
Como variam as notas de acordo com o gênero?¶
In [16]:
popular_genres = df[df['genre'].isin(['Action', 'Adventure', 'Role-Playing', 'Shooter', 'Platform'])]
In [17]:
px.histogram(
popular_genres, x='critic_score',
color='genre', title='Histograma Notas de Jogos por Gênero',
nbins=10, barmode='group', histnorm='probability density',
labels={
'count': 'Quantidade de Notas por Faixa',
'critic_score': 'Faixa de Notas por Jogos'
}
)
Como variam o número de vendas dos jogos em cada região?¶
In [18]:
popular_platforms = df[df['console'].isin(['PS3', 'PS4', 'X360', 'XOne', 'Wii', 'WiiU', 'PC'])]
In [19]:
px.box(
popular_platforms, y=['na_sales', 'pal_sales', 'other_sales', 'jp_sales'],
hover_data=['title'], color='console', title='Boxplots Vendas por Região',
labels={
'value': 'Total de Vendas em Milhões',
'valiable': 'Região'
}
)
In [ ]: